Business processes, which may also be referred to as business flows or workflows, provide a level of abstraction above programming languages such as Java or C++, making them easier for non-programmers to use to describe desired processing within a particular business process. An example language used to define business processes is the Business Process Execution Language (BPEL), which is an XML-based executable language for specifying orchestration between web services that comprise a business process.
Business Process Modeling Notation (BPMN) is a standard graphical notation, resembling a flow chart, which can be used to model business processes. BPMN has three main types of elements, which are each represented by different shapes. An activity, represented graphically as a rectangle, represents some kind of work or action taking place in the business process. An event, represented graphically as a circle, represents external actions such as receiving or requesting information from an external entity or process. A gateway, represented graphically as a diamond, represents the beginning or end of a parallel branch, such as a decision point or a merging point, i.e., a gateway can be used to branch an incoming flow into multiple parallel flows or merge multiple parallel flows into a single outgoing flow. Gateways can include parallel forking (AND), inclusive (OR), and exclusive (XOR) gateways. Parallel forking gateways can take multiple paths or merge multiple paths; all paths will be taken or merged. Inclusive and exclusive gateways are referred to as conditional gateways. In inclusive gateways, one or more paths can be taken or merged. In exclusive gateways, only one path will be taken or merged.
Tokens can be used when executing a business process to control the flow from one activity to another. This way, an activity can be made to wait to execute until the previous activity or activities have completed, preventing activities from executing out of order. Tokens are passed between activities, so when an activity completes, it forwards the token on to the next activity, which can then execute. Typically, a gateway generates tokens to forward along each of the parallel flows to enable activities in those parallel flows to execute. Similarly, a merging gateway will wait until it has received tokens from each of the expected incoming flows, indicating that the activities in those flows have completed, before proceeding so that the process can continue properly without hanging. However, even when properly executing, some flows will not complete, and therefore no token will be forwarded to the merging gateway, which can also cause a process to hang. For example, an exclusive gateway will only take one path, so any activities waiting on the path not taken could get hung up.
This is the general environment in which embodiments of the invention are intended to be used.